package com.me.invaders; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.me.invaders.screens.AbstractScreen; import com.me.invaders.screens.GameOverScreen; import com.me.invaders.screens.GameScreen; import com.me.invaders.screens.LoadingScreen; import com.me.invaders.screens.MainScreen; import com.me.invaders.screens.RecordScreen; import com.me.invaders.screens.WinScreen; /*AplicationListener es una interfaz que proporciona metodos que se llaman cada vez que es necesario * crear, pausar, continuar, renderizar o destruir una aplicacion, nos permite ademas manejar los graficos */ /* Game es una clase que implementa de AplicationListener y que permite delegar en una Screen, * es decir, que permite a la alicacion tener y manejar facilmente varias ventanas */ public class spaceInvaders extends Game { public AbstractScreen PRINCIPAL, GAMEOVER, WIN, LOADING, JUEGO, RECORDS; // Las pantallas que va a tener el juego private AssetManager manager; // Permite cargar los recursos. private SpriteBatch batch; // "Grupo de Sprites (imagenes)" nos permite dibujar rectagulos como referencias a texturas, es necesario para mostrar todo por pantalla private BitmapFont font; // Sirve para mostrar los letras y números por la pantalla. private Preferences preferencias; // Nos permite almacenar datos en el dispositivo. @Override public void create() { manager = new AssetManager(); batch = new SpriteBatch(); // Es recomendable solo usar un SpriteBatch en todo el juego this.font = new BitmapFont(Gdx.files.internal("data/arial.fnt"), Gdx.files.internal("data/arial.png"), false); preferencias = Gdx.app.getPreferences("-_PreferencesInvaders-Data-_"); // Obtenemos los datos del fichero, o si no está creado, se crea automaticamente // Pantallas de carga del juego LOADING = new LoadingScreen(this); // Cargamos todos los elementos externos que usará el juego, como son las texturas y los sonidos. manager.load("data/Loading.png", Texture.class); manager.load("data/Background.png", Texture.class); manager.load("data/GameOver.png", Texture.class); manager.load("data/Records.png", Texture.class); manager.load("data/BotonPlay.png", Texture.class); manager.load("data/BotonExit.png", Texture.class); manager.load("data/BotonRecords.png", Texture.class); manager.load("data/Win.png", Texture.class); manager.load("data/alien1.png", Texture.class); manager.load("data/alien2.png", Texture.class); manager.load("data/alien3.png", Texture.class); manager.load("data/alien4.png", Texture.class); manager.load("data/naveAlienBonus.png", Texture.class); manager.load("data/ship.png", Texture.class); manager.load("data/shot.png", Texture.class); manager.load("data/shotAlien.png", Texture.class); manager.load("data/balaza.png", Texture.class); manager.load("data/bolaBalaEspecial.png", Texture.class); manager.load("data/explosion.wav", Sound.class); manager.load("data/shot.wav", Sound.class); // Coloca la pantalla actual, se llama desde cualquier pantalla anterior y se llama a Screen.show desde la nueva pantalla setScreen(LOADING); } public void cargarPantallas() { // Se cargan todas las demás pantallas del juego PRINCIPAL = new MainScreen(this); JUEGO = new GameScreen(this); GAMEOVER = new GameOverScreen(this); WIN = new WinScreen(this); RECORDS = new RecordScreen(this); } public SpriteBatch getBatch() { return batch; } public AssetManager getManager() { return manager; } public BitmapFont getFont() { return font; } public Preferences getPreferencias() { return preferencias; } @Override public void dispose() { super.dispose(); manager.dispose(); batch.dispose(); } @Override public void render() { super.render(); } @Override public void resize(int width, int height) { super.resize(width, height); } @Override public void pause() { super.pause(); } @Override public void resume() { super.resume(); } }